﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Zeta.Internals.Actors;

namespace UltimatePlugin.Db.Cache
{
    internal class CachedItem : CachedObject
    {
        public CachedItem(DiaObject dia)
            : base(dia, CachedType.Item)
        {
        }

        internal override CachedObject Clone()
        {
            return (CachedItem)this.MemberwiseClone();
        }

        public string InternalName
        {
            get;
            set;
        }

        public bool IsUnidentified
        { 
            get; 
            set; 
        }

        public int Level { get; set; }

        public FollowerType FollowerType { get; set; }

        public int GoldAmount { get; set; }

        public int InventoryColumn { get; set; }

        public int InventoryRow { get; set; }

        public InventorySlot InventorySlot { get; set; }

        public ItemBaseType ItemBaseType { get; set; }

        public ItemQuality Quality { get; set; }

        public int StackQuantity { get; set; }

        public ItemType Type { get; set; }

        public string Name { get; set; }

        public int ArcaneOnCrit { get; set; }

        public int Armor { get; set; }

        public int ArmorBonus { get; set; }

        public int ArmorTotal { get; set; }

        public int AttackSpeedPercent { get; set; }

        public int BlockChance { get; set; }

        public int CritDamagePercent { get; set; }

        public float CritPercent { get; set; }

        public int DamageReductionPhysicalPercent { get; set; }

        public int Dexterity { get; set; }

        public int GoldFind { get; set; }

        public int HatredRegen { get; set; }

        public int HealthGlobeBonus { get; set; }

        public int HealthPerSecond { get; set; }

        public int HealthPerSpiritSpent { get; set; }

        public int Intelligence { get; set; }

        public int LifeOnHit { get; set; }

        public int LifePercent { get; set; }

        public float LifeSteal { get; set; }

        public int MagicFind { get; set; }

        public int ManaRegen { get; set; }

        public int MaxArcanePower { get; set; }

        public int MaxDamage { get; set; }

        public int MaxDiscipline { get; set; }

        public int MaxFury { get; set; }

        public int MaxMana { get; set; }

        public int MaxSpirit { get; set; }

        public int MinDamage { get; set; }

        public int MovementSpeed { get; set; }

        public int PickUpRadius { get; set; }

        public int RequiredLevel { get; set; }

        public int ResistAll { get; set; }

        public int ResistArcane { get; set; }

        public int ResistCold { get; set; }

        public int ResistFire { get; set; }

        public int ResistHoly { get; set; }

        public int ResistLightning { get; set; }

        public int ResistPhysical { get; set; }

        public int ResistPoison { get; set; }

        public int Sockets { get; set; }

        public int SpiritRegen { get; set; }

        public int Strength { get; set; }

        public int Thorns { get; set; }

        public int Vitality { get; set; }

        public int WeaponAttacksPerSecond { get; set; }

        public int WeaponDamagePerSecond { get; set; }

        public Zeta.DamageType WeaponDamageType { get; set; }

        public int WeaponMaxDamage { get; set; }

        public int WeaponMinDamage { get; set; }

        public int NumSocketsFilled { get; set; }

        public int LevelReduction { get; set; }
    }
}
